Skip to content

三、Linux + GCC

3.1 目录结构

Linux 下 C++ 项目的目录结构

text
项目目录/
├── include/
│   └── api/                  # SDK 头文件目录
├── lib/
│   └── libnrc_host.so        # Linux 动态库
├── src/
│   └── main.cpp
└── Makefile

3.2 Makefile

makefile
TARGET=demo
all:
	g++ -o $(TARGET) src/*.cpp -I./include -L./lib -lnrc_host -lpthread -lm -ldl -lrt -lstdc++ -std=c++11 -fPIC
clean:
	rm -f $(TARGET)

3.3 运行时动态库路径

编译成功后运行前,需要让系统能找到 libnrc_host.so

bash
# 方式一:设置 LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
./demo
# 方式二:将库复制到系统目录
sudo cp lib/libnrc_host.so /usr/local/lib/
sudo ldconfig
./demo

3.4 最小连接代码

cpp
#include <iostream>
#include <unistd.h>
#include "cpp_interface/nrc_api.h"

int main() {
    std::cout << "正在连接控制器..." << std::endl;
    SOCKETFD fd = connect_robot("192.168.1.15", "6001");
    if (fd <= 0) {
        std::cout << "连接失败" << std::endl;
        return 1;
    }

    // 等待连接就绪
    while (get_connection_status(fd) != 0) {
        usleep(200000);
    }

    std::cout << "连接成功: " << fd << std::endl;
    std::cout << "SDK 版本: " << get_library_version() << std::endl;
    std::cout << "连接状态: " << get_connection_status(fd) << std::endl;

    // 断开连接
    disconnect_robot(fd);
    return 0;
}

3.5 编译运行

bash
make
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
./demo

输出 连接成功: 1 即表示配置正确。

下一步

完成连接测试后,请浏览接口示例了解更多 API 用法。